package com.defense.util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;

import org.junit.Test;

/**
* @类名  MD5.java
* @作者  jinbanglong
* @版本  V1.0
* @日期  2019年6月29日-下午2:40:42
* @描述  md5加密实现类
*
*/
public class MD5 {
    public static String md5(String plainText) {
        byte[] secretBytes = null;								//定义一个字节数组
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");// 生成一个MD5加密计算摘要  
            md.update(plainText.getBytes());					//对字符串进行加密
            secretBytes = md.digest(); 							//获得加密后的数据
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("没有md5这个算法！");
        }
        //将加密后的数据转换为16进制数字
        String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
        // 如果生成数字未满32位，需要前面补0
        for (int i = 0; i < 32 - md5code.length(); i++) {
            md5code = "0" + md5code;
        }
        return md5code;
    }
    
    public static String rand() {
    	Random r = new Random();
    	char[] rand = new char[4];
    	for(int i=0;i<rand.length;i++) {
    		rand[i]=(char)(r.nextInt(26)+97);
    	}
    	return String.copyValueOf(rand);
    }
    
    @Test   //测试调用
   public void test() {
        System.out.println(rand());
    }

}
